package com.pai4j.message.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;

import java.util.ArrayList;
import java.util.List;

/**
 * 消息SDK配置属性
 *
 * @author PAI4J Team
 * @date 2025-11-01
 */
@Data
@ConfigurationProperties(prefix = "pai4j.message")
public class MessageProperties {

    /**
     * 默认发送渠道
     */
    private String defaultChannel = "websocket";

    /**
     * 默认模板引擎
     */
    private String templateEngine = "freemarker";

    /**
     * 启用的拦截器列表
     */
    private List<String> interceptors = new ArrayList<>();

    /**
     * 资源提供者缓存时间（秒）
     */
    private Long resourceCacheTime = 3600L;

    /**
     * 是否启用异步发送
     */
    private boolean asyncEnabled = false;

    /**
     * 消息优先级（1-10）
     */
    private int defaultPriority = 5;

    /**
     * 是否跳过拦截器
     */
    private boolean skipInterceptors = false;

    /**
     * Email配置
     */
    @NestedConfigurationProperty
    private EmailProperties email = new EmailProperties();

    /**
     * WebSocket配置
     */
    @NestedConfigurationProperty
    private WebSocketProperties websocket = new WebSocketProperties();
    

    /**
     * 聚合配置（使用独立的配置类）
     */
    @NestedConfigurationProperty
    private AggregationProperties aggregation = new AggregationProperties();
    

    /**
     * WebSocket配置（临时类，稍后创建完整版本）
     */
    @Data
    public static class WebSocketProperties {
        private boolean enabled = false;
    }
    
}

